package com.itheima.d6_map;

/**
 * 目标：掌握Map集合的常用方法
 */

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * 目标：掌握Map集合的常用方法(重点)
 */
public class MapTest2API {
    public static void main(String[] args) {
        //创建Map的对象
        Map<String, String> map = new HashMap<>();
        System.out.println("map = " + map);

        // 1.public V put(K v,V v) 添加元素: 无序，不重复，无索引。
        //添加，修改值的能力（会把key相同的键值对覆盖）
        //返回值：如果第一次put键值对数据，返回null，如果是存在的再次put，返回的就是原来键所对应的值
        String r1 = map.put("王宝强", "马蓉");
        String r2 = map.put("宋喆", "马蓉"); //map = {宋喆=马蓉, 王宝强=马蓉}
        String r3 = map.put("王宝强", "翠花"); //map = {宋喆=马蓉, 王宝强=翠花}

        System.out.println("map = " + map);
        System.out.println("r1 = " + r1); //null
        System.out.println("r2 = " + r2); //null
        System.out.println("r3 = " + r3); //马蓉

        map.put("贾乃亮", "李小璐");
        map.put("PGOne", "李小璐");
        map.put("陈羽凡", "白百何");
        map.put("奥特曼", "首长");
        System.out.println("map = " + map);


        // 2.public int size():获取集合的大小
        System.out.println("map.size() = " + map.size());


        // 3、public void clear():清空集合
//        map.clear();
//        System.out.println("r3 = " + r3);


        // 4.public boolean isEmpty(): 判断集合是否为空，为空返回true ,反之！
        System.out.println("map.isEmpty() = " + map.isEmpty());


        // 5.public V get(Object key)：根据键获取对应值
        String value = map.get("奥特曼");
        System.out.println("value = " + value);

        // 6. public V remove(Object key)：根据键删除整个元素(删除键会返回键的值)
        String removeValue = map.remove("王宝强");
        System.out.println("removeValue = " + removeValue);
        System.out.println("map = " + map);


        // 7.public  boolean containsKey(Object key): 判断是否包含某个键 ，包含返回true ,反之
        System.out.println("map.containsKey(\"奥特曼\") = " + map.containsKey("奥特曼"));


        // 8.public boolean containsValue(Object value): 判断是否包含某个值。
        System.out.println("map.containsValue(\"首长\") = " + map.containsValue("首长"));


        // 9.public Set<K> keySet(): 获取Map集合的全部键。
        Set<String> keySet = map.keySet();
        System.out.println("keySet = " + keySet);

        // 10.public Collection<V> values(); 获取Map集合的全部值。
        Collection<String> values = map.values();
        System.out.println("values = " + values);


        // 11.把其他Map集合的数据倒入到自己集合中来。(拓展)
        //putAll方法类似于Collection的addAll方法
        Map<String, String> names = new HashMap<>();
        names.putAll(map);
        System.out.println("names = " + names);
    }
}
